gtk_combo_box_new_with_entry
gtk_combo_box_new_with_model
gtk_combo_box_new_with_model_and_entry
-gtk_combo_box_new_with_area
-gtk_combo_box_new_with_area_and_entry
gtk_combo_box_get_wrap_width
gtk_combo_box_set_wrap_width
gtk_combo_box_get_row_span_column
PROP_ENTRY_TEXT_COLUMN,
PROP_POPUP_FIXED_WIDTH,
PROP_ID_COLUMN,
- PROP_ACTIVE_ID,
- PROP_CELL_AREA
+ PROP_ACTIVE_ID
};
static guint combo_box_signals[LAST_SIGNAL] = {0,};
TRUE,
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
- /**
- * GtkComboBox:cell-area:
- *
- * The #GtkCellArea used to layout cell renderers for this combo box.
- *
- * If no area is specified when creating the combo box with gtk_combo_box_new_with_area()
- * a horizontally oriented #GtkCellAreaBox will be used.
- *
- * Since: 3.0
- */
- g_object_class_install_property (object_class,
- PROP_CELL_AREA,
- g_param_spec_object ("cell-area",
- P_("Cell Area"),
- P_("The GtkCellArea used to layout cells"),
- GTK_TYPE_CELL_AREA,
- GTK_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY));
-
gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/ui/gtkcombobox.ui");
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkComboBox, box);
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkComboBox, button);
{
GtkComboBox *combo_box = GTK_COMBO_BOX (object);
GtkComboBoxPrivate *priv = combo_box->priv;
- GtkCellArea *area;
switch (prop_id)
{
gtk_combo_box_set_active_id (combo_box, g_value_get_string (value));
break;
- case PROP_CELL_AREA:
- /* Construct-only, can only be assigned once */
- area = g_value_get_object (value);
- if (area)
- {
- if (priv->area != NULL)
- {
- g_warning ("cell-area has already been set, ignoring construct property");
- g_object_ref_sink (area);
- g_object_unref (area);
- }
- else
- priv->area = g_object_ref_sink (area);
- }
- break;
-
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
g_value_set_string (value, gtk_combo_box_get_active_id (combo_box));
break;
- case PROP_CELL_AREA:
- g_value_set_object (value, priv->area);
- break;
-
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
return g_object_new (GTK_TYPE_COMBO_BOX, NULL);
}
-/**
- * gtk_combo_box_new_with_area:
- * @area: the #GtkCellArea to use to layout cell renderers
- *
- * Creates a new empty #GtkComboBox using @area to layout cells.
- *
- * Returns: A new #GtkComboBox.
- */
-GtkWidget *
-gtk_combo_box_new_with_area (GtkCellArea *area)
-{
- return g_object_new (GTK_TYPE_COMBO_BOX, "cell-area", area, NULL);
-}
-
-/**
- * gtk_combo_box_new_with_area_and_entry:
- * @area: the #GtkCellArea to use to layout cell renderers
- *
- * Creates a new empty #GtkComboBox with an entry.
- *
- * The new combo box will use @area to layout cells.
- *
- * Returns: A new #GtkComboBox.
- */
-GtkWidget *
-gtk_combo_box_new_with_area_and_entry (GtkCellArea *area)
-{
- return g_object_new (GTK_TYPE_COMBO_BOX,
- "has-entry", TRUE,
- "cell-area", area,
- NULL);
-}
-
-
/**
* gtk_combo_box_new_with_entry:
*
GDK_AVAILABLE_IN_ALL
GtkWidget *gtk_combo_box_new (void);
GDK_AVAILABLE_IN_ALL
-GtkWidget *gtk_combo_box_new_with_area (GtkCellArea *area);
-GDK_AVAILABLE_IN_ALL
-GtkWidget *gtk_combo_box_new_with_area_and_entry (GtkCellArea *area);
-GDK_AVAILABLE_IN_ALL
GtkWidget *gtk_combo_box_new_with_entry (void);
GDK_AVAILABLE_IN_ALL
GtkWidget *gtk_combo_box_new_with_model (GtkTreeModel *model);
GtkWidget *window, *widget;
GtkWidget *menubar, *vbox;
GtkCellArea *area;
- GtkTreeModel *store;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
menubar = gtk_menu_bar_new ();
gtk_widget_show (menubar);
- store = simple_tree_model ();
area = create_cell_area ();
#if _GTK_TREE_MENU_WAS_A_PUBLIC_CLASS_
gtk_box_pack_start (GTK_BOX (vbox), menubar, FALSE, FALSE);
#endif
- /* Add a combo box with the same menu ! */
- widget = gtk_combo_box_new_with_area (area);
- gtk_combo_box_set_model (GTK_COMBO_BOX (widget), store);
- gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
- gtk_widget_show (widget);
- gtk_box_pack_end (GTK_BOX (vbox), widget, FALSE, FALSE);
-
/* Now add some controls */
widget = gtk_combo_box_text_new ();
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Horizontal");
g_object_unref (view);
}
-/* test that new_with_area() keeps the provided area */
-static void
-test_combobox_new_with_area (void)
-{
- GtkWidget *view;
- GtkCellArea *area;
-
- area = gtk_cell_area_box_new ();
- view = gtk_combo_box_new_with_area (area);
- g_assert (gtk_cell_layout_get_area (GTK_CELL_LAYOUT (view)) == area);
-
- g_object_ref_sink (view);
- g_object_unref (view);
-}
-
-/* test that g_object_new keeps the provided area */
-static void
-test_combobox_object_new (void)
-{
- GtkWidget *view;
- GtkCellArea *area;
-
- area = gtk_cell_area_box_new ();
- gtk_orientable_set_orientation (GTK_ORIENTABLE (area), GTK_ORIENTATION_HORIZONTAL);
- view = g_object_new (GTK_TYPE_COMBO_BOX, "cell-area", area, NULL);
- g_assert (gtk_cell_layout_get_area (GTK_CELL_LAYOUT (view)) == area);
-
- g_object_ref_sink (view);
- g_object_unref (view);
-}
-
typedef GtkComboBox MyComboBox;
typedef GtkComboBoxClass MyComboBoxClass;
g_object_unref (view);
}
-/* test that a combobox subclass keeps the provided area */
-static void
-test_combobox_subclass1 (void)
-{
- GtkWidget *view;
- GtkCellArea *area;
-
- subclass_init = 0;
-
- area = gtk_cell_area_box_new ();
- view = g_object_new (my_combo_box_get_type (), "cell-area", area, NULL);
- g_assert (area == gtk_cell_layout_get_area (GTK_CELL_LAYOUT (view)));
- g_assert (gtk_orientable_get_orientation (GTK_ORIENTABLE (area)) == GTK_ORIENTATION_HORIZONTAL);
-
- g_object_ref_sink (view);
- g_object_unref (view);
-}
-
/* test we can access the area in subclass init */
static void
test_combobox_subclass2 (void)
g_object_unref (view);
}
-static void
-test_combobox_subclass3_subprocess (void)
-{
- GtkWidget *view;
- GtkCellArea *area;
-
- subclass_init = 1;
-
- area = gtk_cell_area_box_new ();
- view = g_object_new (my_combo_box_get_type (), "cell-area", area, NULL);
- g_assert (area == gtk_cell_layout_get_area (GTK_CELL_LAYOUT (view)));
- g_assert (gtk_orientable_get_orientation (GTK_ORIENTABLE (area)) == GTK_ORIENTATION_VERTICAL);
-
- g_object_ref_sink (view);
- g_object_unref (view);
-}
-
-/* test we get a warning if an area is provided, but ignored */
-static void
-test_combobox_subclass3 (void)
-{
- g_test_trap_subprocess ("/tests/combobox-subclass3/subprocess", 0, 0);
- g_test_trap_assert_failed ();
- g_test_trap_assert_stderr ("*ignoring construct property*");
-}
-
/* test that we have a cell area after new() */
static void
test_cellview_new (void)
g_test_add_func ("/tests/iconview-subclass3/subprocess", test_iconview_subclass3_subprocess);
g_test_add_func ("/tests/combobox-new", test_combobox_new);
- g_test_add_func ("/tests/combobox-new-with-area", test_combobox_new_with_area);
- g_test_add_func ("/tests/combobox-object-new", test_combobox_object_new);
g_test_add_func ("/tests/combobox-subclass0", test_combobox_subclass0);
- g_test_add_func ("/tests/combobox-subclass1", test_combobox_subclass1);
g_test_add_func ("/tests/combobox-subclass2", test_combobox_subclass2);
- g_test_add_func ("/tests/combobox-subclass3", test_combobox_subclass3);
- g_test_add_func ("/tests/combobox-subclass3/subprocess", test_combobox_subclass3_subprocess);
g_test_add_func ("/tests/cellview-new", test_cellview_new);
g_test_add_func ("/tests/cellview-new-with-context", test_cellview_new_with_context);